import axios from "axios";
import store from "@/store/store";
import router from "@/router/router";
import { loadingStart, loadingEnd } from './loadingCount';
import { ElMessage, ElNotification } from "element-plus";

const server = axios.create({
  baseURL: '../xytc/',
  // baseURL: '../jeecg-boot/',
  // baseURL: process.env.NODE_ENV === 'development' ? "../jeecg-boot/api/" : '../',
  timeout: 1000 * 20,
  withCredentials: false, // 允许携带cookie
});

// 请求拦截器:在发请求之前，请求拦截器可以检测到,可以在请求发出去之前做一些事情
server.interceptors.request.use(
  (config) => {
    loadingStart(config);
    return config;
  },
  (err) => {
    Promise.reject(err);
  }
);
// 响应拦截器：包含两个函数（一个是成功返回的函数，一个是失败的返回的函数）
server.interceptors.response.use(
  (res) => {
    let config = res.config;
    loadingEnd(config);

    // 特殊接口直接返回处理，如下载
    if (config.returnAll) {
      return res;
    }

    if (res.data.code == 0 || res.data.code == 200) {
      if (config['successTip']) {
        ElMessage({
          message: res.data.message || '操作成功',
          type: 'success',
          grouping: true,
        })
      }
    } else {
      if (!config.hasOwnProperty('errorTip') || config['errorTip']) {
        ElNotification({
          message: res.data.message || '操作失败，接口异常',
          type: 'error',
        })
      }
    }
    return res.data;
  },
  (err) => {
    loadingEnd(err.config, true);
    ElNotification({
      message: err.response.data?.message || err.message,
      type: 'error',
    })
    return Promise.reject(err);
    // return promise.reject(new Error('faile'))
  }
);

export default server;
